/**
 * 研发项目服务类
 */

const BaseProjectService = require('./base_project_service.js');
const util = require('../../../framework/helpers/util.js');
const cloudUtil = require('../../../framework/cloud/cloud_util.js');
// 使用统一配置入口引用模型
const OAModelsConfig = require('../config/models_config');
const { ResearchProjectModel, ResearchProjectFlowModel, ResearchProjectResourceModel } = OAModelsConfig;

// 修复util.time不是函数的问题，添加自定义时间函数
// 如果util中没有time函数，我们自己实现一个
if (!util.time || typeof util.time !== 'function') {
    util.time = function() {
        // 返回当前时间的秒级时间戳
        return Math.floor(Date.now() / 1000);
    }
    console.log('[ResearchProjectService] 添加了自定义time函数实现');
}

class ResearchProjectService extends BaseProjectService {
    
    /**
     * 创建研发项目
     * @param {Object} data 项目数据
     * @returns {String} 项目ID
     */
    async createResearchProject(data) {
        // 数据预处理
        data.status = 0; // 初始状态：草稿
        data.createTime = this.timestamp;
        data.updateTime = this.timestamp;
        data.createBy = this.userId;
        
        // 检查名称是否重复
        let where = {
            name: data.name
        };
        let hasProject = await ResearchProjectModel.count(where);
        if (hasProject > 0)
            this.AppError('项目名称已存在');
        
        // 创建项目
        let projectId = await ResearchProjectModel.insert(data);
        
        // 记录操作日志
        this.logAction('创建研发项目', data.name, projectId);
        
        return projectId;
    }
}

module.exports = ResearchProjectService;